#rem
'/*
'* Copyright (c) 2011, Damian Sinclair
'*
'* This is a port of Box2D by Erin Catto (box2d.org).
'* It is translated from the Flash port: Box2DFlash, by BorisTheBrave (http://www.box2dflash.org/).
'* Box2DFlash also credits Matt Bush and John Nesky as contributors.
'*
'* All rights reserved.
'* Redistribution and use in source and binary forms, with or without
'* modification, are permitted provided that the following conditions are met:
'*
'*   - Redistributions of source code must retain the above copyright
'*     notice, this list of conditions and the following disclaimer.
'*   - Redistributions in binary form must reproduce the above copyright
'*     notice, this list of conditions and the following disclaimer in the
'*     documentation and/or other materials provided with the distribution.
'*
'* THIS SOFTWARE IS PROVIDED BY THE MONKEYBOX2D PROJECT CONTRIBUTORS "AS IS" AND
'* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
'* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
'* DISCLAIMED. IN NO EVENT SHALL THE MONKEYBOX2D PROJECT CONTRIBUTORS BE LIABLE
'* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
'* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
'* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
'* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
'* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
'* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
'* DAMAGE.
'*/
#end
Import box2d.flash.flashtypes
Import box2d.common
#rem
'/**
'* A 2D column vector with 3 elements.
'*/
#end
Class b2Vec3
    #rem
    '/**
    '* Construct using co-ordinates
    '*/
    #end
    Method New(x:Float = 0, y:Float = 0, z:Float = 0)
        
        Self.x = x
        Self.y = y
        Self.z = z
    End
    #rem
    '/**
    '* Sets this vector to all zeros
    '*/
    #end
    Method SetZero : void ()
        
        x = 0.0
        y = 0.0
        z = 0.0
    End
    #rem
    '/**
    '* Set this vector to some specified coordinates.
    '*/
    #end
    Method Set : void (x:Float, y:Float, z:Float)
        
        Self.x = x
        Self.y = y
        Self.z = z
    End
    Method SetV : void (v:b2Vec3)
        
        x = v.x
        y = v.y
        z = v.z
    End
    #rem
    '/**
    '* Negate this vector
    '*/
    #end
    Method GetNegative : b2Vec3 ()
        Return New b2Vec3( -x, -y, -z)
    End
    Method NegativeSelf : void ()
        x = -x
        y = -y
        z = -z
    End
    Method Copy : b2Vec3 ()
        
        Return New b2Vec3(x,y,z)
    End
    Method Add : void (v:b2Vec3)
        
        x += v.x
        
        y += v.y
        
        z += v.z
    End
    Method Subtract : void (v:b2Vec3)
        
        x -= v.x
        
        y -= v.y
        
        z -= v.z
    End
    Method Multiply : void (a:Float)
        
        x *= a
        
        y *= a
        
        z *= a
    End
    Field x:Float
    
    
    Field y:Float
    
    
    Field z:Float
    
End


